/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.ufjf.pos.model.dao;

import br.ufjf.pos.model.Procedimento;
import br.ufjf.pos.util.GenericDao;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

/**
 *
 * @author cleber
 */
public class ProcedimentoDAO extends GenericDao<Procedimento, Integer> {

    @Override
    public void inserir(Procedimento obj) throws SQLException, ClassNotFoundException {
        String sql = "INSERT INTO TBprocedimento (DFdescricao, DFvalor) VALUES (?,?)";
        
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.getDescricao());
        lista.add(String.valueOf(obj.getValor()));
       
        executaDML(sql, lista);
    }

    @Override
    public void alterar(Procedimento obj) throws SQLException, ClassNotFoundException {
        ArrayList<String> lista = new ArrayList<String>();
        String sql = "UPDATE TBprocedimento SET DFdescricao = ? , DFvalor = ?  WHERE DFid_procedimento = ? ";        
        lista.add(obj.getDescricao());
        lista.add(obj.getValor()+"");
        lista.add(obj.getIdProcedimento()+"");
   
        executaDML(sql, lista);  
    }

    @Override
    public void apagar(Procedimento obj) throws SQLException, ClassNotFoundException {
        ArrayList<String> lista = new ArrayList<String>();
        String sql = "DELETE FROM TBprocedimento WHERE DFid_procedimento = ? ";        
        lista.add(obj.getIdProcedimento()+"");
        
        executaDML(sql, lista);
    }

    @Override
    public Procedimento pesquisaChave(Integer obj) throws SQLException, ClassNotFoundException {
        String sql = "SELECT * FROM TBprocedimento WHERE DFid_procedimento = ? ";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(obj.toString());
        
        ResultSet rs = executasql(sql, lista);
        if(rs.next()){        
            Procedimento u = new Procedimento(rs.getInt("DFid_procedimento"), rs.getString("DFdescricao"), rs.getFloat("DFvalor"));
            return u;
        } else {
            return null;
        } 
    }

    public boolean isRegistroExistenteBancoDadosComOutroID(String descricao, int id) throws SQLException, ClassNotFoundException {
        String sql = "SELECT * FROM TBprocedimento WHERE DFdescricao = ? AND DFid_procedimento <> ? ";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(descricao);
        lista.add(String.valueOf(id));

        ResultSet rs = executasql(sql, lista);
        if(rs.next()){                                
            return true;
        } else {
            return false;
        }   
    }
    
    @Override
    public ArrayList<Procedimento> buscarTodos() throws SQLException, ClassNotFoundException {
        String sql = "SELECT * FROM TBprocedimento  ";
        ArrayList<String> lista = new ArrayList<String>();        
        //lista.add(obj.toString());
        
        ArrayList<Procedimento> listaUsuario = new ArrayList<Procedimento>();
        
        ResultSet rs = executasql(sql, lista);
        while(rs.next()){               
            Procedimento u = new Procedimento(rs.getInt("DFid_procedimento"), rs.getString("DFdescricao"), rs.getInt("DFvalor"));
            listaUsuario.add(u);
        } 
     
        return listaUsuario;
    }

    public boolean isRegistroExistenteBancoDados(String descricao) throws SQLException, ClassNotFoundException {
        String sql = "SELECT * FROM TBprocedimento WHERE DFdescricao = ? ";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(descricao);

        ResultSet rs = executasql(sql, lista);
        if(rs.next()){                                
            return true;
        } else {
            return false;
        }   
    }

    public float valorProcedimento(int idProcedimento) throws SQLException, ClassNotFoundException {
        String sql = "SELECT DFvalor FROM TBprocedimento WHERE DFid_procedimento = ? ";
        ArrayList<String> lista = new ArrayList<String>();
        lista.add(idProcedimento +"");

        ResultSet rs = executasql(sql, lista);
        if(rs.next()){ 
            return rs.getInt("DFvalor");
        } else {
            return 0;
        }   
    }
    
}
